Parallel Braings - Параллельные Мозги - Лабораторная 2

Семинары по параллельному программированию

Рыбинск, РГАТА 2007

Список семинаров Форум Ссылки

Лабораторная работа №2
Многопоточное программирование. Threading in C#

Задача #3 - Semaphores

Краткое описание:
Используя примитив синхронизации семафор. Решить задачи:

  1. Рандеву 2 потоков
  2. Барьер (рандеву N потоков)
  3. Повторно используемый барьер

Неформальное описание:
Известно, что для параллельного программирования в инструментарии современных ОС имеются множество примитивов синхронизации. Однако некоторые примитивы "примитивнее" других, в том смысле, что можно выбрать некоторые примитивы (а возможно и один примитив) в качестве базовых и на их основе построить другие примитивы.
Дейкстрой на роль такого примитива был предложен семафор.
Опишем более подробно все (три) подзадачи:
Ниже будет приведен псевдокод, иллюстрирующий подзадачи:

1. Рандеву 2-х потоков

Поток A                                       Поток B
1 statement a1                                1 statement b1
2 statement a2                                2 statement b2 
Необходимо гарантировать, что a1 выполниться до b2, а b1 - до a2. Порядок выполнения a1 и b1 относительно друг друга не оговаривается (может быть любым).

2. Барьер (Рандеву N потоков)
Обобщите конструкцию рандеву на случай N потоков. К началу выполнения программы N фиксировано.

Поток Ti
1 rendezvous
2 critical point
Необходимо гарантировать, что ниодин из потоков не выполнит critical point, до тех пор, пока все потоки не выполнят rendezvous. Аналогией барьера может служить стенка, которая сдерживая n-1 накатившихся на неё мячиков, а в момент столкновения с n-ым мячиком опрокидывается и пропускает все мячи.

3.Повторно используемый барьер
Обобщить конструкцию барьера на случай использования его в цикле

Поток Ti
while(condition)
{
1 rendezvous
2 critical point
}
Необходимо гарантировать выполнение тех же условий, что и в случае 2.

Содержание отчета к л.р.:

  1. Исходный код программы (или нескольких версий программы)

Сайт создан в системе uCoz